/**
  ******************************************************************************
  * @file    bsp_gpio.h
  * @author  Yun
  * @version V1.0.0
  * @date    2025-02-12
  * @brief   GPIO硬件抽象层头文件
  * @license EULA (End User License Agreement)
  *          Copyright (c) 2025 星瑜科技自动化 Co., Ltd. All rights reserved.
  ******************************************************************************
  */

#ifndef FRAMEWORK_BSP_GPIO_H
#define FRAMEWORK_BSP_GPIO_H

#ifdef __cplusplus
extern "C" {
#endif

/*---------------------- Includes ----------------------*/
#include "bsp_common_type.h"
#include "gpio_interface.h"

/**
  * @brief  GPIO硬件配置结构体
  */
typedef struct Gpio_Hw_Cfg {
    GPIO_TypeDef* Gpio_x;         /*!< GPIO端口基地址指针 */
    GPIO_InitTypeDef stGpioInit;  /*!< GPIO初始化配置参数 */
} Gpio_Hw_Cfg_TypeDef;

/*---------------------- 硬件操作API ----------------------*/
/**
  * @brief  初始化GPIO接口
  * @param  pGpioHwCfg: GPIO硬件配置指针
  * @retval BSP_Status_TypeDef
  *         @arg BSP_OK: 初始化成功
  *         @arg BSP_ERROR: 参数错误或无效GPIO端口
  * @note   自动使能对应GPIO端口的时钟
  */
uint8_t Bsp_Gpio_Init(void* pGpioHwCfg);

/**
  * @brief  写GPIO状态
  * @param  pGpioHwCfg: GPIO硬件配置指针
  * @param  u8State: 目标状态
  * @retval BSP_Status_TypeDef
  *         @arg BSP_OK: 操作成功
  *         @arg BSP_ERROR: 参数错误
  */
uint8_t Bsp_Gpio_Write(void* pGpioHwCfg, uint8_t u8State);

/**
  * @brief  读GPIO状态
  * @param  pGpioHwCfg: GPIO硬件配置指针
  * @param  pu8State: 状态输出缓冲区指针
  * @retval BSP_Status_TypeDef
  *         @arg BSP_OK: 读取成功
  *         @arg BSP_ERROR: 参数错误
  */
uint8_t Bsp_Gpio_Read(void* pGpioHwCfg, uint8_t* pu8State);

/**
  * @brief  GPIO标准接口实例
  */
extern Gpio_Interface_TypeDef stBspGpioInterface;

#ifdef __cplusplus
}
#endif

#endif /* FRAMEWORK_BSP_GPIO_H */

/************************ (C) COPYRIGHT 星瑜科技自动化 *****END OF FILE****/
